Evaluate

Syntax: @Evaluate [variable]

Used without any parameter, the Evaluate command sets the status of all attributes to 'evaluate'. All current values are retained as defaults but inference treats the attributes as 'Unassigned status' and will seek new values whenever each attribute is encountered. This achieves the same effects as when the run time user presses the Again button, and chooses use default values - but here the run again process is under developer control.

See also the topic on Static and Dynamic objects.

Alternatively, one attribute name can be given as a parameter. A typical use of this is in order to retain the current value (perhaps where you need the current attribute value to appear elsewhere embedded in some text for example), but this is the moment at which you need to mark it for re-evaluation.

Example

@Evaluate Grade

sets the status of the attribute Grade to evaluate.

The Evaluate command has no real practical use should you position it in a procedure that is tied to the attribute itself e.g. @Evaluate Grade in the attribute events of Grade. This is because the tied procedure @commands would not be executed again, once the attribute already has a value. The isDynamic property could be set for the attribute as an alternative.

Evaluate can also be used to force the (re)evaluation of a Backward Chained attribute. The main use here would be in a looping strategy to control which attribute to re-evaluate. Again, if the attribute should ALWAYS be evaluated then use the isDynamic property.